/*
 * LessonMapper 2.Copyright (C) Olivier Motelet.This program is free software; you can redistribute it and/ormodify it under the terms of the GNU General Public Licenseas published by the Free Software Foundation; either version 2of the License, or (at your option) any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package lessonMapper.diffusion;

import java.util.List;

import lessonMapper.lom.LOMAttribute;
import lessonMapper.lom.LOMRelationType;

/**
 * 
 */
public abstract class SugFunctionHandler {

	/**
	 * 
	 */
	private SugFunctionHandler itsParentFunction;

	/**
	 * 
	 */
	protected LOMAttribute itsLOMAttribute;

	/**
	 * 
	 */
	protected LOMRelationType itsRelationType;

	/**
	 * 
	 * 
	 * @return 
	 */
	public SugFunctionHandler getParentFunction() {
		return itsParentFunction;
	}

	/**
	 * 
	 * 
	 * @param aParentFunction 
	 */
	public void setParentFunction(SugFunctionHandler aParentFunction) {
		itsParentFunction = aParentFunction;
	}

	/**
	 * 
	 * 
	 * @param aTypeList 
	 * 
	 * @return 
	 */
	public List<LOMRelationType> getRelationTypeHistory(
			List<LOMRelationType> aTypeList) {
		if (itsRelationType != null )
			aTypeList.add(itsRelationType);
		if (itsParentFunction != null)
			return itsParentFunction.getRelationTypeHistory(aTypeList);
		return aTypeList;
	}

	/**
	 * 
	 * 
	 * @return 
	 */
	public abstract List<SugFunctionHandler> init();

	/**
	 * 
	 */
	public abstract void callback();

}
